package com.lixiaoyu.dao;

import com.lixiaoyu.entity.ExpressBox;

import java.util.*;

/**
 * 快递箱  持久层
 */
public class ExpressBoxDB {

    List<Integer> boxNumber = new ArrayList<>();
    //取件码  和  快递柜子
    static Map<Integer, String> expressBoxMap = new HashMap<>();


    public String getExpressBox(int expressCode) {
        //如果 集合中没有数据的话 就全部赋值100
        if (boxNumber.size() == 0) {
            for (int i = 0; i < 100; i++) {
                boxNumber.add(100);
            }
        }
        String express = "A";
        for (int i = 0; i < boxNumber.size(); i++) {
            //如果  没有快递
            if (expressBoxMap.size() == 0) {
                i = 0;
                for (int j = 0; j < 100; j++) {
                    if (boxNumber.get(j) <= 0)
                        boxNumber.set(j,100);
                }
            }
            //等于100  说明没有存放快递
            if (boxNumber.size() != 0 && boxNumber.get(i) == 100) {
                //如果 长度是1  说明是 个位数补0
                if (Integer.toString(i).toCharArray().length == 1) {

                    express += "0" + i;
                    boxNumber.set(i, i);

                    //否则 原下标就是i
                } else {
                    express += i;
                    boxNumber.set(i, i);
                }
                expressBoxMap.put(expressCode, express);
                return express;
            }
        }
        return "已经没有快递、请找人工领取！";
    }

    public static String getBoxCode(int takeCode) {

        Set<Integer> integers = expressBoxMap.keySet();
        for (Integer a :
                integers) {
            if (a == takeCode)
                return expressBoxMap.get(a);
        }

        return "0";
    }

    public int deleteExpressBox(int getExpressCode) {

        //查询出快递柜子
        Set<Integer> integers = expressBoxMap.keySet();
        String expressBox = "";
        for (Integer a :
                integers) {
            if (a == getExpressCode) {
                expressBox = expressBoxMap.get(a);
            }
        }
        //例如： A02  判断A后面是否是0  如果是的话就用A0 后面的
        if ("0".equals(expressBox.substring(1, 2))) {
            expressBox = expressBox.substring(2, 3);
            //反之  用A后面的
        } else {
            expressBox = expressBox.substring(1, 3);
        }

        //修改编码集合  把要清空柜子 编码对应的集合位置 修改成100
        for (Integer a : boxNumber) {
            //如果  找到集合中对应的  数据  就给他进行修改
            //这个地方也就是   把原来的默认的100  再次还原  标识 次柜子号没人用
            System.out.println("a的值是=======" + a);
            if (a == Integer.parseInt(expressBox)) {
                boxNumber.add(a, 100);
                System.out.println("================" + boxNumber.get(a));
            }
        }


        //验证是否进行了修改
        for (Integer a : boxNumber) {
            if (a == Integer.parseInt(expressBox)) {
                //如果进来了 说明就是没有修改成功
                System.out.println("快递柜编码集合，修改失败");
                return 0;
            }
        }
        //删除 快递柜信息
        String remove = expressBoxMap.remove(getExpressCode);


        return 1;
    }
}
